package com.romotc.qqrobot.webqq;

import org.apache.commons.lang.StringUtils;
/**
 * 命名规则：
 * 1.URL
 * URL_+网址第一个点前面的单词+_/符号后面的路径名(路径名全大写，URL_后的部分成为接口URL常量)
 *     URL_+DomainPart1+       URI
 *     如果DomainPart1和URI相等则取DomainPart2
 *     e.g:http://check.ptlogin2.qq.com/check-->URL_PTLOGIN2_CHECK
 * 2.接口调用结果提取正则表达式
 * Result_Regex_+接口URL常量
 * e.g:Result_Regex_PTLOGIN2_CHECK
 * 3.接口调用结果值项常量
 * Result_Key_+接口URL常量+_常量含义+_常量值字面义
 * e.g:Result_Key_PTLOGIN2_CHECK_NEEDVCODE_YES
 * 4.接口调用参数常量
 * Login_Param_Status_OnLine
 * 5.WEBQQ应用常量
 * APPID
 * 6.COOKIE_o_cookie
 * 7.REQUEST_PARAMS_tuin  REQUEST_PARAMS_URL常量_参数
 * 
 * @author romotc
 */
public class WebQQConstant {
	
	/**
	 * 请求参数：aid
	 */
	public static final String Key_ReqDataObj_AID = "WebQQConstant_ReqDataObj_Aid";
	
	
	
	/**
	 * 接口调用默认的成功标记
	 */
	public static final int Call_ResFlag_DefaultSuccessFlag = 0;
	

	//////////////////WEBqq 接口URL常量开始
	/**
	 * 登陆验证：是否需要验证码接口Url
	 */
	public static final String URL_PTLOGIN2_CHECK = "http://check.ptlogin2.qq.com/check";
	/**
	 * 登陆验证：是否需要验证码接口返回数据格式
	 */
	public static String Result_Regex_PTLOGIN2_CHECK = "ptui_checkVC\\('(\\d+)','(.+)'\\);";
	/**
	 * 登录验证 接口结果常量：需要验证码
	 */
	public static String Result_Key_PTLOGIN2_CHECK_NEEDVCODE_YES  = "1";
	
	
	/**
	 * 通过登录状态获取webqqType
	 * @param loginStatus
	 */
	public static int getWebQQTypeFromLoginStatus(String loginStatus) {
		if(Login_Param_Status_Hidden.equals(loginStatus))
			return Login_Param_Webqq_Type_Hidden;

		if(Login_Param_Status_OnLine.equals(loginStatus))
			return Login_Param_Webqq_Type_OnLine;
		
		if(Login_Param_Status_CallMe.equals(loginStatus))
			return Login_Param_Webqq_Type_CallMe;
		
		if(Login_Param_Status_Away.equals(loginStatus))
			return Login_Param_Webqq_Type_Away;
		
		if(Login_Param_Status_Busy.equals(loginStatus))
			return Login_Param_Webqq_Type_Busy;
		
		if(Login_Param_Status_Silent.equals(loginStatus))
			return Login_Param_Webqq_Type_Silent;
		
		return 0;
	}
	
	public static final String Login_Param_Status_Default = "online";
	/**
	 *登陆相关参数静态值  
		hidden隐身
	 */
	public static final String Login_Param_Status_Hidden = "hidden";
	public static final int Login_Param_Webqq_Type_Hidden = 40;
	/**
	 * 登陆相关参数静态值 
	 * online 我在线上 
	 */
	public static final String Login_Param_Status_OnLine = "online";
	public static final int Login_Param_Webqq_Type_OnLine = 10;
	/**
	 * 登陆相关参数静态值 
	 * callme Q我吧
	 */
	public static final String Login_Param_Status_CallMe = "callme";
	public static final int Login_Param_Webqq_Type_CallMe = 60;
	/**
	 * 登陆相关参数静态值 
	 * away离开
	 */
	public static final String Login_Param_Status_Away = "away";
	public static final int Login_Param_Webqq_Type_Away = 30;
	/**
	 * 登陆相关参数静态值 
	 * busy忙碌
	 */
	public static final String Login_Param_Status_Busy = "busy";
	public static final int Login_Param_Webqq_Type_Busy = 50;
	/**
	 * 登陆相关参数静态值 
	 * silent请勿打扰
	 */
	public static final String Login_Param_Status_Silent = "silent";
	public static final int Login_Param_Webqq_Type_Silent = 70;
	
	/**
	 * 一次登录
	 */
	public static final String URL_PTLOGIN2_LOGIN = "http://ptlogin2.qq.com/login";
	/**
	 * 一次登录返回数据格式
	 * ptuiCB('0','0','http://web.qq.com/loginproxy.html?login2qq=1&webqq_type=30','0','登录成功！', 'Romotc');
	 * ptuiCB('3','0','','0','您输入的帐号或者密码不正确，请重新输入。', '97190867');
	 * ptuiCB('7','0','','0','很遗憾，网络连接出现异常，请您稍后再试。(2384462424)', '97190867');
	 */
	public static String Result_Regex_PTLOGIN2_LOGIN = "ptuiCB\\('(\\d+)','(\\d+)','(.*)','(\\d+)','(.+)', '(.+)'\\);\\r\\n";
	/**
	 * 登录正确的标志位值
	 */
	public static String Result_Key_PTLOGIN2_LOGIN_Success = "0";
	
	/**
	 * 二次登录
	 */
	public static final String URL_D_LOGIN = "http://d.web2.qq.com/channel/login2";
	/////////////////URL常量结束
	
	
	//////////////WEBQQ应用常量开始///////////////
	/*
	 * webqqAppID
	 */
	public static final int APPID = 1003903;
	
	/**
	 * clientId的长度
	 */
	public static final int Webqq_ClientId_Length = 8;
	//常见于Url后t参数
	public static final String T = "20120320001";
	//////////////WEBQQ应用常量结束///////////////	
	
	
	
	public static final String COOKIE_o_cookie = "o_cookie";
	
	public static final String REQUEST_PARAMS_tuin = "tuin";
	
	public static final String Cookie_ClientKey = "clientkey";
	
	//请求参数开始
	/**
	 * 命名规则 REQUEST_PARAMS_URI_ParamName
	 * 其中URI 为最后一个/后开始 ?结束中间的部分
	 * URI首字母如果为小写则改成大写 URI其他部分的首字母为小写
	 * ParamName首字母大写
	 */
	public static final String REQUEST_PARAMS_Get_friend_info2_Tuin = REQUEST_PARAMS_tuin;

	
	
	/**
	 * 返回参数开始
	 */
	public static final String REQUEST_RES_Retcode = "retcode";
	//正常
	public static final int REQUEST_RES_Retcode_Ok = 0;
	
	public static final String REQUEST_RES_Result = "result";
	
	/**
	 * 命名规则 REQUEST_RES_URI_Retcode
	 * 其中URI 为最后一个/后开始 ?结束中间的部分
	 * URI首字母如果为小写则改成大写 URI其他部分的首字母为小写
	 * Retcode首字母大写
	 */
	public static final String REQUEST_RES_Get_user_friends2_Retcode = REQUEST_RES_Retcode;
	/**
	 * 返回数据默认值(常量数据定义) 命名规则：_数据意义的英文格式 首字母大写
	 */
	public static final int REQUEST_RES_Get_user_friends2_Retcode_Ok = REQUEST_RES_Retcode_Ok;
	
	public static final String REQUEST_RES_Get_user_friends2_Result = REQUEST_RES_Result;

	/**
	 * 返回数据子数据内容 命名规则: _SubData 首字母大写
	 */
	public static final String REQUEST_RES_Get_user_friends2_Result_Friends = "friends";

	public static final String REQUEST_RES_Get_user_friends2_Result_Marknames = "marknames";

	public static final String REQUEST_RES_Get_user_friends2_Result_Categories = "categories";

	public static final String REQUEST_RES_Get_user_friends2_Result_Vipinfo = "vipinfo";

	public static final String REQUEST_RES_Get_user_friends2_Result_Info = "info";

	
	public static final String Cookie_ptui_loginuin = "ptui_loginuin";



	public static final String COOKIE_pgv_pvid = "pgv_pvid";




	public static String Cookie_ptwebqq = "ptwebqq";

	public static String COOKIE_uin = "uin";
	
	public static String Cookie_skey = "skey";
	
	public static boolean isRobotUin(String uin) {
		if(StringUtils.isNotBlank(uin) && uin.indexOf("@") != -1) {
			return true;
		}
		
		return false;
	}

	/**
	 * 
	 * @param url
	 * @return
	 */
	public static boolean isUi(String url) {
		if(StringUtils.isNotBlank(url))
		{

			int idx = url.indexOf("?");
			if(idx != -1)
				url = url.substring(0, idx);
			
			if(url.indexOf("web.qq.com/undefinedcgi/svr/face/getface") != -1)
				return false;
			
			if(url.indexOf("png") != -1 || url.indexOf("gif") != -1 
					|| url.indexOf("ico") != -1
					|| url.indexOf("js") != -1 || url.indexOf("css") != -1
					|| url.indexOf("captcha") != -1
					|| url.indexOf("getface") != -1)
				//http://ptlogin2.qq.com/login?u=sshproxy@qq.com&p=0002107F145D5182C0678F50B5D345CF&verifycode=!KKK&webqq_type=10&remember_uin=1&login2qq=1&aid=1003903&u1=http%3A%2F%2Fweb.qq.com%2Floginproxy.html%3Flogin2qq%3D1%26webqq_type%3D10&h=1&ptredirect=0&ptlang=2052&from_ui=1&pttype=1&dumy=&fp=loginerroralert&action=2-19-73337&mibao_css=m_webqq
				return true;
		}

		return false;
	}

	/**
	 * 检查ctype是否为应用程序类型
	 * @param ctype
	 * @return
	 */
	public static boolean isContents(String ctype) {
		if(StringUtils.isNotBlank(ctype) && (
				ctype.indexOf("application") != -1
				|| ctype.indexOf("text") != -1))
			return true;
		return false;
	}
}
